package lormi.meipin.service;

import lormi.meipin.dto.PositionAddDto;
import lormi.meipin.dto.PositionEditDto;
import lormi.meipin.dto.PositionNearByDto;
import lormi.meipin.dto.PositionSearchDto;
import lormi.meipin.entity.Position;
import lormi.meipin.exception.LMException;
import lormi.meipin.vo.PositionSearchVo;
import lormi.meipin.vo.PositionSeeVo;
import lormi.meipin.vo.PositionShareSeeVo;

import java.util.List;

/**
 * 职位管理接口
 * @author ThreeFeng
 * @date 2016年8月12日 下午5:46:13
 */
public interface IPositionService {

	/**
	 * 刷新职位排序
	 * @param userId 用户ID
	 */
	void updatePositionSort(Integer userId) throws LMException;
	
	/**
	 * 发布一个职位
	 * @param positionAddDto
	 * @throws LMException
	 */
	void addPosition(PositionAddDto positionAddDto) throws LMException;
	
	/**
	 * 删除一个职位
	 * @param id
	 * @throws LMException
	 */
	void delPosition(Integer id) throws LMException;

	/**
	 * 修改一个职位
	 * @param positionEditDto
	 * @throws LMException
	 */
	void editPosition(PositionEditDto positionEditDto) throws LMException;
	
	/**
	 * 获取一个职位
	 * @param id
	 * @throws LMException
	 */
	Position getPosition(Integer id) throws LMException;
	
	/**
	 * 隐藏或者显示一个职位
	 * @param id
	 * @throws LMException
	 */
	void getHiddenOrShow(Integer id) throws LMException;
	
	/**
	 * 商家获取职位列表
	 * @param userid
	 * @throws LMException
	 */
	List<Position> getListPosition(Integer userid) throws LMException;
	
	/**
	 * 个人=》收索职位
	 * @param positionSearchDto
	 * @throws LMException
	 */
	List<PositionSearchVo> getSearchPosition(PositionSearchDto positionSearchDto) throws LMException;
	
	/**
	 * 个人=》附近职位
	 * @param positionNearByDto
	 * @throws LMException
	 */
	List<PositionSearchVo> getNearByPosition(PositionNearByDto positionNearByDto) throws LMException;

	/**
	 * 个人=》查看一个职位
	 * @param userid 用户ID
	 * @param id　职位ID
	 * @param sharecode 分享码
	 * @return
	 * @throws LMException
	 */
	PositionSeeVo getSeePosition(Integer userid, Integer id, String sharecode) throws LMException;
	
	/**
	 * 个人=》分享职位列表之后，查看商家和职位列表信息
	 * @param userid
	 * @throws LMException
	 */
	PositionShareSeeVo getShareSee(Integer userid) throws LMException;
	
}
